package com.ruoyi.system.mapper;


import com.ruoyi.system.domain.entity.SmartReservation;
import com.ruoyi.system.domain.generation.IncreaseMonthlyCardInfoRequest;
import com.ruoyi.system.domain.generation.IncreaseWhileListInfoRequest;
import com.ruoyi.system.domain.generation.UpdateMonthlyCardInfoRequest;
import com.ruoyi.system.domain.generation.UpdateWhileListInfoRequest;
import com.ruoyi.system.domain.moneyentity.SmartCarMonthlyCardRelations;
import com.ruoyi.system.domain.moneyentity.SmartWhitelist;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * SmartSystemConfigurationMapper
 *系統设置管理
 * @author life.
 * @date 2025/3/21
 */
@Mapper
public interface SmartSystemConfigurationMapper {


    /**
     * 系统设置区域
     */

    /**
     * 查询指定绑定 ID 的月卡关系及对应的规则
     * @param scBindingId 绑定 ID
     * @return 月卡关系实体列表，每个实体包含规则列表
     */
    List<SmartCarMonthlyCardRelations> selectAllSmartCarMonthlyCardRelations( @Param("scBindingId") Long scBindingId,
                                                                              @Param("scActivationDate") Date scActivationDate,
                                                                              @Param("scExpiryDate") Date scExpiryDate,
                                                                              @Param("scIsActive") Long scIsActive);


    /**
     * 根据月卡绑定 ID 更新关联的规则的上架下架状态（软删）
     * @param scBindingId 月卡绑定 ID
     * @param scIsActive 新的上架下架状态值
     * @return 受影响的行数
     */
    int updateScIsActiveByMonthlyCardBindingId(@Param("scBindingId") Long scBindingId, @Param("scIsActive") Long scIsActive);


    /**
     * 根据月卡规则 ID 修改月卡信息
     * @param request 修改请求对象
     * @return 受影响的行数
     */
    int updateMonthlyCardInfo(@Param("request") UpdateMonthlyCardInfoRequest request);


    /**
     * 新增月卡信息
     * @param request 新增请求对象
     * @return 受影响的行数
     */
    int insertMonthlyCardRelations(IncreaseMonthlyCardInfoRequest request);
    int insertChargingRule(IncreaseMonthlyCardInfoRequest request);




    /**
     * 查询指定会员 ID 的会员 关系及对应的规则
     * @param scWhitelistId 白名单 ID
     * @return 会员 关系实体列表，每个实体包含规则列表
     */
    List<SmartWhitelist> selectAllSmartWhitelist( @Param("scWhitelistId") Long scWhitelistId,
                                                  @Param("scValidPeriodStart") Date scValidPeriodStart,
                                                  @Param("scValidPeriodEnd") Date scValidPeriodEnd,
                                                  @Param("scIsActive") Long scIsActive);

    /**
     * 根据会员 ID 更新上架下架状态（软删）
     * @param scWhitelistId 白名单 ID
     * @param scIsActive 新的上架下架状态值
     * @return 受影响的行数
     */
    int updateScIsActiveByWhitelistId(@Param("scWhitelistId") Long scWhitelistId,@Param("scIsActive")Long scIsActive);

    /**
     * 根据会员 ID 修改会员信息
     * @param request 修改请求对象
     * @return 受影响的行数
     */
    int updateMemberInfo(@Param("request") UpdateWhileListInfoRequest request);
    /**
     * 新增会员信息
     * @param request 新增请求对象
     * @return 受影响的行数
     */
    int insertWhitelistInfo(@Param("request") IncreaseWhileListInfoRequest request);
    int insertChargingRuleInfo(@Param("request") IncreaseWhileListInfoRequest request);



}
